package gui;

import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;

import javax.swing.border.LineBorder;

/** Si tratta di un'estensione di LineBorder, che permette
 *  di impostare anche la curvatura degli angoli di un contorno, oltre
 *  alle proprietà già esistenti per Border.
 * @author Daniele
 * @version 1.2 */
public class RoundedBorder extends LineBorder {

	private static final long serialVersionUID = 8423720365726995327L;
	
	/** Il diametro della circonferenza usata per tracciare gli archi arrotondati del contorno. */
	private int diameter;
	/** Il colore dell'interno. */
	private Color innerColour;
	
	/** Costruisce un contorno con gli angoli arrotondati, una volta dati il colore, 
	 *  lo spessore e il diametro della circonferenza usata per disegnare gli archi.
	 * @param _outerColour	Il colore del contorno.
	 * @param _thickness	Lo spessore della linea del contorno.
	 * @param _diameter		Il valore diametrale degli archi del contorno. */
	public RoundedBorder(Color _outerColour, Color _innerColour, int _thickness, int _diameter){
		super(_outerColour, _thickness, true);
		innerColour = _innerColour;
		diameter = _diameter;
	}
	
	public void paintBorder(Component c, Graphics g, int x, int y, int width, int height){
		g.setColor(this.lineColor);
		g.fillRoundRect(0, 0, c.getWidth(), c.getHeight(), this.diameter, this.diameter);
		g.setColor(this.innerColour);
		g.fillRoundRect(thickness, thickness, c.getWidth()-2*thickness-1, c.getHeight()-2*thickness-1, this.diameter, this.diameter);
	}
}
